#!/usr/bin/python3
# -*- coding: utf-8 -*-

import os
import argparse
from app import create_app
from app.config import config as app_config

def parse_args():
    """解析命令行参数"""
    # 获取默认配置
    default_config = os.environ.get('FLASK_CONFIG') or 'development'
    default_env = app_config[default_config]
    
    parser = argparse.ArgumentParser(description='Flask Mock Server')
    parser.add_argument(
        '--config', 
        type=str, 
        default=default_config,
        choices=['development', 'testing', 'production'],
        help=f'配置环境 (default: {default_config})'
    )
    parser.add_argument(
        '--host', 
        type=str, 
        default=None,  # None表示使用配置中的值
        help=f'监听主机 (default: 从配置中获取)'
    )
    parser.add_argument(
        '--port', 
        type=int, 
        default=None,  # None表示使用配置中的值
        help=f'监听端口 (default: 从配置中获取)'
    )
    parser.add_argument(
        '--debug', 
        action='store_true',
        help='启用调试模式'
    )
    
    return parser.parse_args()

def main():
    """应用入口函数"""
    # 解析命令行参数
    args = parse_args()
    
    # 创建应用实例
    config_name = args.config
    app = create_app(config_name)
    
    # 确定运行参数
    host = args.host or app.config['HOST']
    port = args.port or app.config['PORT']
    debug = args.debug or (config_name == 'development')
    
    # 打印启动信息
    print(f"启动 Flask Mock Server (环境: {config_name})")
    print(f"监听地址: http://{host}:{port}")
    
    # 运行应用
    app.run(
        host=host,
        port=port,
        debug=debug
    )

if __name__ == '__main__':
    main()
